package com.example.backed.mapper;

import com.example.backed.dto.GroupBuyQueryDTO;
import com.example.backed.entity.GroupBuy;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface GroupBuyMapper {
    /**
     * 插入团购活动
     */
    int insert(GroupBuy groupBuy);

    /**
     * 更新团购活动
     */
    int update(GroupBuy groupBuy);

    /**
     * 根据ID查询团购活动
     */
    GroupBuy findById(@Param("id") Long id);

    /**
     * 查询团购活动列表
     */
    List<GroupBuy> findByQuery(GroupBuyQueryDTO query);

    /**
     * 查询团购活动总数
     */
    long countByQuery(GroupBuyQueryDTO query);

    /**
     * 更新参团人数
     */
    int updateJoinCount(@Param("id") Long id, @Param("delta") Integer delta);

    /**
     * 更新团购状态
     */
    int updateStatus(@Param("id") Long id, @Param("status") Integer status);

    /**
     * 查询需要更新状态的团购活动
     */
    List<GroupBuy> findNeedUpdateStatus();

    /**
     * 查询所有进行中的团购活动
     */
    List<GroupBuy> findOngoing();

    /**
     * 查询即将开始的团购活动
     */
    List<GroupBuy> findUpcoming();

    /**
     * 查询所有团购活动
     */
    List<GroupBuy> findAll();

    /**
     * 根据状态查询团购活动
     */
    List<GroupBuy> findByStatus(@Param("status") Integer status);

    /**
     * 根据状态统计团购活动数量
     */
    int countByStatus(@Param("status") Integer status);

    /**
     * 分页查询团购活动
     */
    List<GroupBuy> findByStatusWithPage(@Param("status") Integer status, 
                                       @Param("offset") Integer offset, 
                                       @Param("limit") Integer limit);
} 